package com.leo.offer;


/**
 * 请实现一个函数，输入一个整数，输出该整数二进制表示中1的个数。例如，把9表示成二进制是1001，有2位是1，该函数输出2
 *      n&(n-1) 可以将二进制中最右边的一个1变成0，很多问题解决非常方便
 * @author xuexiaolei
 * @version 2018年03月01日
 */
public class T10 {
    public static int contain1(int n){
        int res = 0;
        while (n!=0){
            res++;
            n = n&(n-1);
        }
        return res;
    }

    public static void main(String[] args) {
        System.out.println(contain1(1));
        System.out.println(contain1(2));
        System.out.println(contain1(-1));
    }
}
